home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 2 / LSD and 17bit Compendium Deluxe - Volume II.iso / a / prog / asmsrc / tango2.lha / SOURCES / RAY1000+DOT.S < prev    next >
Text File  |  1988-07-19  |  23KB  |  1,087 lines

  1. ; ****************************************
  2. ; ** INTRO NUMBER 5 (C) 1990 CRYPTIC UK **
  3. ; ** CODED BY: TANGO                    **
  4. ; ** MUSIC BY: COUNT                    **
  5. ; ****************************************
  6.  
  7.     opt c-
  8.     section blitter,code_c            Chip Ram please !!
  9.     include    df1:definitions            Give me some hardware reggies
  10.     include    df1:macros                Give me some macros
  11.     
  12.         
  13. ;LOCAL CONSTANTS
  14.  
  15. icra        equ $bfed01                
  16. ;allocmem     =-30-168                
  17. ;freemem     =-30-180                
  18. fontmemory    =4000
  19. MEMF_CHIP    EQU    1<<1        
  20. MEMF_CLEAR    EQU    1<<16        
  21. MEMORY    EQU    MEMF_CHIP+MEMF_CLEAR    ;allocates chip ram and clears it
  22.  
  23.  
  24.  
  25. TAKEOVER:
  26.     Move.l    #Blank,D1
  27.     Move.w    D1,Blank1l+2
  28.     Move.w    D1,Blank2l+2
  29.     Move.w    D1,Blank3l+2
  30.     Swap    D1
  31.     Move.w    d1,Blank1h+2
  32.     Move.w    d1,Blank2h+2
  33.     Move.w    d1,Blank3h+2
  34.     
  35.     LEA custom,a5        
  36.     LEA GFXLIB(PC),a1             Point to 'graphics.library'
  37.     MOVEQ #0,D0                     Doesn't matter which version
  38.      MOVE.L 4.w,a6                 EXECBASE
  39.     jsr    -132(a6)                 task switching off (forbid)
  40.      JSR -$228(a6)                  Openlibrary
  41.      MOVE.L D0,GFXBASE             Store library address
  42.     jsr    cyb_init
  43.         
  44. ;Now put the graphic addresses in the CopperList         
  45.  
  46.      move.l    screenx,d1            Bitplane memory address
  47.     move.w    d1,bp1lo+2            for scroll 1.
  48.      swap    d1
  49.      move.w    d1,bp1hi+2
  50.  
  51.      move.l    screenx,d1            Bitplane memory address
  52.     ADD.L    #10000,D1
  53.     move.w    d1,bp3lo+2            for scroll 1.
  54.      swap    d1
  55.      move.w    d1,bp3hi+2
  56.  
  57.      move.l    screenx,d1            Bitplane memory address
  58.     ADD.L    #10000*2,D1
  59.     move.w    d1,bp5lo+2            for scroll 1.
  60.      swap    d1
  61.      move.w    d1,bp5hi+2
  62.  
  63.      move.l    screeny,d1            Bitplane memory address
  64.     move.w    d1,abp1lo+2            for scroll 2.
  65.      swap    d1
  66.      move.w    d1,abp1hi+2
  67.  
  68.     move.l    screeny,d1            Bitplane memory address
  69.     ADD.L    #10000,D1
  70.     move.w    d1,abp3lo+2            for scroll 2.
  71.      swap    d1
  72.      move.w    d1,abp3hi+2
  73.  
  74.     move.l    screeny,d1            Bitplane memory address
  75.     ADD.L    #10000*2,D1
  76.     move.w    d1,abp5lo+2            for scroll 2.
  77.      swap    d1
  78.      move.w    d1,abp5hi+2
  79.  
  80.  
  81. ; ** SET UP EVEN BITPLANES 2,4,6 **
  82.  
  83.     MOVE.L    #PLAY2+18*44-2,D1
  84.     MOVE.W    D1,BP2LO+2
  85.     SWAP    D1
  86.     MOVE.W    D1,BP2HI+2
  87.     
  88.     MOVE.L    #PLAY2+18*44-2,D1
  89.     ADD.L    #44*290,D1
  90.     MOVE.W    D1,BP4LO+2
  91.     SWAP    D1
  92.     MOVE.W    D1,BP4HI+2
  93.     
  94.     MOVE.L    #PLAY2+18*44-2,D1
  95.     ADD.L    #44*290*2,D1
  96.     MOVE.W    D1,BP6LO+2
  97.     SWAP    D1
  98.     MOVE.W    D1,BP6HI+2
  99.     
  100.      move.l GFXBASE,d0            Move gfxbase offset to d0
  101.      MOVE.L D0,A6                
  102.      MOVE.W #$80,dmacon(a5)        Turn off copper whilst changing it
  103.      MOVE.L $32(A6),WBCOPPER         Store old (WBench) copper address
  104.      MOVE.L #OURCOPPER,$32(A6)    Point to new copper list (our own)
  105.      MOVE.W #$8080,dmacon(a5)    Re-enable copper
  106.      MOVE.W #$8010,intena(a5)        
  107.      MOVE.L $6c,old                Save work bench interrupt
  108.      MOVE.L #LEV3,$6c            Point to were to set up interrupt
  109.     move.w    intenar(a5),systemints
  110.     move.b    #%01111111,icra        Kill keyboard.
  111.         
  112. WAIT:     
  113.     BTST #6,$BFE001                This waits for the left
  114.      BNE.S    WAIT                mouse button to be pressed
  115.     move.l    4.w,a6                EXECBASE
  116.      MOVE.L old,$6c                Restore system interrupts
  117.     MOVE.L GFXBASE,A6
  118.      MOVE.W #$80,dmacon(a5)        Disable DMA
  119.      MOVE.L WBCOPPER,$32(A6)        Restore old copperlist
  120.      MOVE.W #$8080,dmacon(a5)    Enable DMA
  121.      move.w    systemints,d0        Systems interrupt
  122.      or.w    #$c000,d0
  123.      move.w    d0,intena(a5)        Enable OS interrupts
  124.      move.b    #%10011011,icra        Enable keyboard
  125.     clr.w    $dff0a8                Clear music
  126.     clr.w    $dff0b8
  127.     clr.w    $dff0c8
  128.     clr.w    $dff0d8
  129.     move.w    #$f,$dff096
  130.     rts
  131.  
  132.  
  133. ERROR:    
  134.     move.l 4.w,a6                Get EXECBASE
  135.     jsr    -138(a6)                Permit ( multi-tasking on )
  136.     moveq    #0,d0                Clear d0
  137.      RTS                            Return to AmigaDOS
  138.  
  139.  
  140. ;This is the NEW level 3 interrupt
  141.  
  142. LEV3:
  143.      Save_all                    Save all registers to the stack
  144.     lea    custom,a5
  145.     AND #$10,intreqr(a5)           Check if interrupt is from Copper 
  146.     BNE out
  147.     move.w    #$8010,$9c            Cause Copper interrupt                                
  148.  
  149. ; ** Main Routines called every VBI **
  150.  
  151.     bsr    testscroll
  152.     bsr    testscroll2
  153.     bsr    bounce2
  154.     bsr    bounce
  155.     jsr    cyb_music
  156.             
  157. out:     
  158.     Return_all
  159.     DC.W $4ef9                    hex value for  JMP instruction
  160. old:     
  161.     DC.L 0                        will jump to normal interrupt
  162.  
  163.  
  164. ; ** THE SCROLL ROUTINE **
  165.  
  166. testscroll:
  167.     tst.l    stopper
  168.     beq.s    scroll
  169.     sub.l    #1,stopper
  170.     rts
  171. scroll:
  172.     cmp.l    #30,val                    Blitshifted all <<<
  173.     blo.s    coarse_scroll_it        No then get doing it !!
  174.     bsr        blit_char                Blit letter to screen
  175.     clr.l    val                        Reset index
  176. coarse_scroll_it:
  177.     bsr        coarse                    Scroll all line
  178.     rts                            
  179.  
  180. testscroll2:
  181.     tst.l    stopper2                Test for pause.
  182.     beq.s    scroll2
  183.     sub.l    #1,stopper2
  184.     rts
  185. scroll2:
  186.     cmp.l    #30,val2                Blitshifted all <<<
  187.     blo.s    coarse_scroll_it2        No then get doing it blitter man !!
  188.     bsr        blit_char2                Blit letter to screen
  189.     clr.l    val2                    Reset index
  190. coarse_scroll_it2:
  191.     bsr        coarse2                    Scroll all line
  192.     rts                            
  193.  
  194.     
  195. ; ** BLIT LETTER ON THE SCREEN **
  196.  
  197. blit_char
  198.     jsr        text
  199.     lea        custom,a5                Get custom chip address
  200.     move.l    screenx,a0                 The screen on which scrolly is.
  201.     move.l    #font,a1                 Put font in blitter source
  202.     add.l    d2,a1
  203.     MOVE.L    #2,D1
  204.     Sub.l    #4,A0
  205. blit_test:
  206.     btst    #14,$dff002                 Blitter busy !!!
  207.     bne    blit_test                     Lets wait till she finishes !
  208.     move.w    #$ffff,bltafwm(a5)        Mask 
  209.     move.w    #$ffff,bltalwm(a5)        Mask 
  210.     move.l    a0,bltdpth(a5)             Blitter dest D (BOTTOM OF SCREEN)
  211.     move.l    a1,bltapth(a5)             Blitter source A (SCROLLING FONT)
  212.     move.w    #36,bltamod(a5)             Modulo (20-1)*2
  213.     move.w    #44,bltdmod(a5)             Modulo (20-1)*2
  214.     move.w    #$9f0,bltcon0(a5)         Minterms D=A
  215.     clr.w    bltcon1(a5)                 Set Ascending mode
  216.      move.w    #34*64+2,bltsize(a5)     Blit size (SIZE OF FONT)
  217.     ADD.L    #10000,A0
  218.     ADD.L    #40*200,A1
  219.     DBF        D1,BLIT_TEST
  220.     rts                                  Return
  221.  
  222.  
  223. ; ** BLITSHIFT THE ENTIRE SCROLL LINE **
  224. ;
  225. ;     FUNCTION: TO BARREL SHIFT THE ENTIRE SCROLLING MESSAGE.
  226.  
  227. coarse:
  228.     lea        custom,a5                 
  229.     move.l    screenx,a0                
  230.     move.l    a0,a1
  231.     add.l    #2,a1
  232.     move.l    #2,d1
  233.     move    #12,d2                
  234.     incl    #4,val                    
  235.     ror        #4,d2                    ; Set to correct bits (12-15)
  236.     or.w    #$09f0,d2
  237. blit_wait:
  238.     btst    #14,$dff002            
  239.     bne        blit_wait
  240.     move.l    #-1,bltafwm(a5)
  241.     move.l    a1,bltapth(a5)
  242.     move.l    a0,bltdpth(a5)
  243.     move.w    #0,bltamod(a5)
  244.     move.w    #0,bltdmod(a5)
  245.     move.w    d2,bltcon0(a5)    
  246.     move.w    #34*64+20,bltsize(a5)
  247.     add.l    #10000,a0
  248.     add.l    #10000,a1
  249.     dbf        d1,blit_wait
  250.     rts    
  251.  
  252.  
  253.  
  254. ; ** SCROLL NUMBER TWO **
  255. ;
  256. ; DOCUMENTED IN SCROLL NUMBER ONE.
  257.  
  258. blit_char2:
  259.     jsr        text2
  260.     lea        custom,a5                
  261.     move.l    screeny,a0                 
  262.     move.l    #font,a1                 
  263.     add.l    d2,a1
  264.     MOVE.L    #2,D6
  265.     Sub.l    #4,A0
  266.  
  267. blit_test2:
  268.     btst    #14,$dff002                 
  269.     bne    blit_test2                     
  270.     move.w    #$ffff,bltafwm(a5)        
  271.     move.w    #$ffff,bltalwm(a5)        
  272.     move.l    a0,bltdpth(a5)             
  273.     move.l    a1,bltapth(a5)             
  274.     move.w    #36,bltamod(a5)             
  275.     move.w    #44,bltdmod(a5)             
  276.     move.w    #$9f0,bltcon0(a5)         
  277.     clr.w    bltcon1(a5)                 
  278.      move.w    #34*64+2,bltsize(a5)     
  279.     ADD.L    #10000,A0
  280.     ADD.L    #40*200,A1
  281.     DBF        D6,BLIT_TEST2
  282.     rts                                  
  283.  
  284. coarse2:
  285.     lea        custom,a5                 
  286.     move.l    screeny,a0                
  287.     move.l    a0,a1
  288.     add.l    #2,a1
  289.     move.l    #2,d4
  290.     incl    #4,val2                    
  291.     move    #12,d7                
  292.     ror        #4,d7                    
  293.     or        #%100111110000,d7        
  294. blit_wait2:
  295.     btst    #14,$dff002            
  296.     bne        blit_wait2
  297.     move.l    #-1,bltafwm(a5)
  298.     move.l    a1,bltapth(a5)
  299.     move.l    a0,bltdpth(a5)
  300.     move.w    #0,bltamod(a5)
  301.     move.w    #0,bltdmod(a5)
  302.     move.w    d7,bltcon0(a5)    
  303.     move.w    #34*64+20,bltsize(a5)
  304.     add.l    #10000,a0
  305.     add.l    #10000,a1
  306.     dbf        d4,blit_wait2
  307.     rts
  308.     
  309.  
  310.  
  311.  
  312. ; ** THIS CRAPPY CODE BOUNCES THE SCROLLY MESSAGE NUMBER TWO **
  313. ;
  314. ;     ENTRYS  : YCORD-HOW FAR UP AND DOWN SCREEN TO GO.
  315. ;             : DELTAY-WAIT COMMAND IN COPPERLIST.
  316. ;     FUNCTION: BOUNCE THE SCROLLY MESSAGE.
  317.  
  318. bounce:
  319.     cmp.l    #66,ycord
  320.     beq.s    up
  321.     add.l    #1,ycord
  322.     sub.b    #1,deltay
  323.     rts
  324. up: cmp.l    #66,ycordminus
  325.     beq.s    rst_cord
  326.     add.l    #1,ycordminus
  327.     add.b    #1,deltay
  328.     rts
  329. rst_cord:
  330.     clr.l    ycord
  331.     clr.l    ycordminus
  332.     rts
  333.     
  334.     even
  335.  
  336.  
  337. ; ** THIS CRAPPY CODE BOUNCES SCROLLY MESSAGE NUMBER ONE (ONE AT THE TOP) **
  338. ;
  339. ;     ENTRYS  : YCORD2-HOW FAR UP AND DOWN SCREEN TO GO.
  340. ;             : DELTAY2-WAIT COMMAND IN COPPERLIST.
  341. ;     FUNCTION: BOUNCE THE SCROLLY MESSAGE.
  342.  
  343. bounce2:
  344.     cmp.l    #66,ycord2
  345.     beq.s    up2
  346.     add.l    #1,ycord2
  347.     add.b    #1,deltay2
  348.     rts
  349. up2:cmp.l    #66,ycordminus2
  350.     beq.s    rst_cord2
  351.     add.l    #1,ycordminus2
  352.     sub.b    #1,deltay2
  353.     rts
  354. rst_cord2:
  355.     clr.l    ycord2
  356.     clr.l    ycordminus2
  357.     rts
  358.     
  359.     even
  360.  
  361.  
  362. ; ** CHARACTER DECODER ROUTINE **
  363.  
  364. ;    CHARACTER BASE ADDRESS RETURNED IN D2
  365. ;     JUST ADD THIS TO YOUR FONT ADDREES.
  366.  
  367. text:
  368.     Clr.l    d1
  369.     move.l    acurent,a2
  370.     move.b    (A2),d1
  371.     cmp.b    #254,d1
  372.     beq.s    stop_scroll
  373.     Cmp.b    #255,d1
  374.     bne        over
  375.     Move.l    #Texter,a2
  376.     MOVE.L    #TEXTER,ACURENT
  377.     Move.b    (a2),d1
  378. Over
  379.     Add.l    #1,Acurent
  380.     Lea        Char,a1
  381.     Sub.l    #32,d1
  382.     Add.l    d1,d1
  383.     Clr.l    d2
  384.     Move.w    (a1,d1),d2                ; CHAR BASE ADDRESS IN D2.
  385.     Rts
  386. stop_scroll:
  387.     move.l    #5136,d2                ; Blank letter.
  388.     add.l    #1,acurent
  389.     move.l    #150,stopper
  390.     rts
  391.  
  392.  
  393. ; ** CHARACTER OFFSETS TO FONT **
  394.     even
  395. Char:
  396.     dc.w    5136,3864,0,0,0,0,0,5132,3868,3872,0,0
  397.     dc.w    5128,3876,5124,0,3860,2584,2588,2592,2596,3840
  398.     dc.w    3844,3848,3852,3856,0,0,0,0,0,5120,0
  399.     dc.w    0,4,8,12,16,20,24,28,32,36,1280,1284,1288,1292,1296
  400.     dc.w    1300,1304,1308,1312,1316,2560,2564,2568,2572,2576,2580
  401.     dc.w    0,0,0
  402.     even
  403.  
  404. ; ** MESSAGE NUMBER ONE **
  405. Acurent:
  406.     DC.L    Texter
  407. Texter:
  408.     DC.B    " TANGO OF CRYPTIC TYPING  QUICK MESSAGE TO R-TYME"
  409.     DC.B    " THE STARFIELD WILL BE IN NEXT TIME (HAVING TROUBLE WITH IT)"
  410.     DC.B    " I DONT KNOW WHAT THE QUADRANT IS FOR IT OR THE COESENT OF DELTA 8 OVER OMEGA ???"
  411.     DC.B    "  OH ANY IDEAS ON THE ROTATION BIT ??? AND DONT SAY LSR !! AND WHAT DO YOU MEAN BY A COMPRESS ROUTINE ON THE SCROLLER ???"
  412.     DC.B    " ALL THE CODE FOR THE SCROLLER THAT KODAK DID HAS BEEN ALL RE-WROTE DUE TO THE FACT THAT WHEN I PUT MUSIC IN IT SLOOOOWED DOWN"
  413.     DC.B    "  ALSO IT WASN'T SET UP IN DUAL PLAYFIELD AND I THOUGHT THE SOURCE CODE WAS A BIT ON THE LONG SIDE."
  414.     DC.B    "  THIS CODE IS NOW 200K BUT WILL CRUNCH TO ABOUT 70K DUE TO THE FACT THERE ARE ALOT OF BLANK SCREENS IN THERE !!!"
  415.     DC.B    "  WELL WRITE SOON OR PHONE AND I'LL SEE YA IN BLACKPOOL (WILDTHING SAYS THAT YOUR PAYING ???? IS IT TRUE !!!) WELL SEE YA RAY"
  416.     DC.B    "        "
  417.     DC.B    "   TANGO     ",254
  418.     DC.B    "  THE COOL GUY OF CRYPTIC WITH THE MORE INTERESTING SCROLL TEXT THAN THAT SHIT ONE AT THE BOTTOM (NO DONT LOOK THERE!!)"
  419.     DC.B    "  I THINK ITS BY WILDTHING (THE OTHER COOL GUY IN CRYPTIC) SO ITS ABOUT TO BE WEIRD AND FULL OF SPILLENG MASTIKES"
  420.     DC.B    "  DONATELLO HAS BEEN BANNED FROM USING THE COOL CAR DUE TO THE FACT HIS DAD HAS BEEN WATCHING THE MILEAGE !!!  THE OTHER DAY WHEN WE HAD BEEN TO BLACKPOOL WE HAD CLOCKED UP"
  421.     DC.B    " 200 MILES !!!  AND IN THE LAST WEEK OR SO WE HAVE CLOCKED UP AROUND 700 MILES !!!"
  422.     DC.B    "   ARE YOU STILL HERE RAY OR HAVE YOU GONE TO THE OTHER BORING SHIT BLITSHIFT SCROLL ???"
  423.     DC.B    "  WILDTHING GO AND FUK YOURSELF AND STOP TELLING ME TO HURRY UP !!!"
  424.     DC.B    "  A MESSAGE TO THE 2 BIRDS IN BOLTON ON SATURDAY WE'D HAVE GIVEN YOU A LIFT IF PROTON WASN'T IN THE BACK (NO ROOM) SEE YA NEXT WEEK FOR A GOOD TALK AND A GOOD ....."
  425.     DC.B    "  MESSAGE TO VIKI YOU TART WILDTHING WANTS HIS PACKET OF MATES BACK HE ONLY USED TWO, BY THE WAY YOU OWE HIM 50 QUID FOR THAT NIGHT !! HE SAYS !!!"
  426.     DC.B    "     WELL I'M GOING NOW TO GO AND DO SOMETHING MORE INTERESTING LIKE A  GOOD .U.K  YOU CAN GO AND READ THAT BORING DIKS SCROLL NOW     GO ON READ IT AND FALL TO SLEEP         SEE YA"
  427.     DC.B    "      WRAPPP                    "
  428.     DC.B    255
  429.     even
  430.  
  431.  
  432. text2:
  433.     Clr.l    d1
  434.     move.l    acurent2,a2
  435.     move.b    (A2),d1
  436.     cmp.b    #254,d1
  437.     beq        pause_scroll
  438.     Cmp.b    #255,d1
  439.     bne        over2
  440.     Move.l    #Texter2,a2
  441.     MOVE.L    #TEXTER2,ACURENT2        ; RESET TO BEGINING OF MESSAGE.
  442.     Move.b    (a2),d1
  443. Over2:
  444.     Add.l    #1,Acurent2
  445.     Lea        Char,a1
  446.     Sub.l    #32,d1
  447.     Add.l    d1,d1
  448.     Clr.l    d2
  449.     Move.w    (a1,d1),d2                ; CHAR BASE ADDRESS IN D2.
  450.     rts
  451. pause_scroll:
  452.     move.l    #5136,d2
  453.     add.l    #1,acurent2
  454.     move.l    #150,stopper2
  455.     rts
  456.  
  457.  
  458. ; ** MESSAGE NUMBER TWO **
  459.     even
  460. Acurent2
  461.     Dc.l    Texter2
  462. Texter2:
  463.     DC.B    " WILD THING THE KNOB ED WARNING HALF OF THE SHIT IN THIS SCROLL TEXT IS NOT TRUE "
  464.     Dc.b    " WILD THING",254," TYPING YET SOME MORE AMAZYING SCROLL TEXT"
  465.     DC.B    " DID YOU NO THAT IF I BENT OVER I COULD FUCK MY SELF MY DICK IS THAT BIG!!!!!! "
  466.     DC.B    " ASK VIKI SHE WILL TELL YOU I AM GOING TO SEND YOU THE FINISHED BOOT MENU ISTALLER IN THE NEXT FEW DAYS"
  467.     DC.B    " COULD YOU SEND ME DOWN SPIDDYS PHONE NUMBER SO I CAN GIVE HIM SOME SERIOUS BULLSHIT ABOUT WHY THERE HAS BEEN SUCH A BIG DELAY"
  468.     DC.B    " DID YOU NO THAT -3 SQUARED = 9 I DO HA HA CAN I THINK OF ANY MORE BULLSHIT TO TYPE"
  469.     DC.B    " THAT SORCE YOU SENT ME OF THE VECTORS IS NOT KREATORS ITS SOME THING I HAD DONE AGES BACK ONLY KIDDING"
  470.     DC.B    " IS FILM HEAD "
  471.     DC.B    "   KODAK   ",254," THERE YES WELL WHY THE FUCK DID YOU NOT USE DUAL PLAYFIELD FOR THEM TWO SCROLLERS OR DID RAY NOT TELL YOU"
  472.     DC.B    " HE WANTED A PICTURE BEHIND HIM DID YOU NO THAT PROTON WANTS TO GET BEHIND YOU YES HE IS GAY "
  473.     DC.B    " SO HE SAYS NO I BETTER NOT START RYMING CAUSE I WILL GET YOU LOT CRYING BECAUSE IT IS NOT VERY GOOD UNDERSTOOD THERE I AM AT IT AGAIN"
  474.     DC.B    " IS ENT LIFE A BITCH AND THEN YOU MARRY ONE BAD NEWS EH WHATS THE DIFFERENCE BETWEEN MARAGE AND PRISON YOU LIKE THE FOOD IN PRISON"
  475.     DC.B    " THATS ALL FOR NOW NO IT ISNT I AM BLACK WELL I NO THAT I MEAN I AM BACK MESSAGE TO SPIDY RAY INFORMS ME THAT YOU DO MOST COMPS"
  476.     DC.B    " HOW COME I HAVE NOT GOT NONE I AM WELL PISSED OFF YESS YESS YESS HARDER HARDER THOSE WHERE VIKI WORDS WHEN I FUCKED HER BRAINS OUT"
  477.     DC.B    " YES I AM A MENTALY DERANGED BIG DICKED COOL PERSON I THINK"
  478.     DC.B    " WHAT DO YOU THINK OF THE BORRING SCROLL TEXT ABOVE "
  479.     DC.B    " NOW CLICK THAT PUSSY BUTTON AND QUIT THIS SHIT I MEAN COW DUNG I MEAN  FUCK IT PRESS IT OR I WILL",255
  480.     even
  481.  
  482.  
  483. ;                **********************************************
  484. ;                ** THE MUZAX PLAY ROUTINE FOR NOISE TRACKER ** 
  485. ;                  ******************************************
  486.  
  487.  
  488. MUZAX:
  489.  
  490.     jsr    CYB_init
  491.  
  492. end:    rts
  493. CYB_init:lea    CYB_data,a0
  494.     add.l    #$03b8,a0
  495.     moveq    #$7f,d0
  496.     moveq    #0,d1
  497. CYB_init1:
  498.     move.l    d1,d2
  499.     subq.w    #1,d0
  500. CYB_init2:
  501.     move.b    (a0)+,d1
  502.     cmp.b    d2,d1
  503.     bgt.s    CYB_init1
  504.     dbf    d0,CYB_init2
  505.     addq.b    #1,d2
  506. CYB_init3:
  507.     lea    CYB_data,a0
  508.     lea    CYB_sample1(pc),a1
  509.     asl.l    #8,d2
  510.     asl.l    #2,d2
  511.     add.l    #$438,d2
  512.     add.l    a0,d2
  513.     moveq    #$1e,d0
  514. CYB_init4:
  515.     move.l    d2,(a1)+
  516.     moveq    #0,d1
  517.     move.w    42(a0),d1
  518.     asl.l    #1,d1
  519.     add.l    d1,d2
  520.     add.l    #$1e,a0
  521.     dbf    d0,CYB_init4
  522.     lea    CYB_sample1(PC),a0
  523.     moveq    #0,d0
  524. CYB_clear:
  525.     move.l    (a0,d0.w),a1
  526.     clr.l    (a1)
  527.     addq.w    #4,d0
  528.     cmp.w    #$7c,d0
  529.     bne.s    CYB_clear
  530.     clr.w    $dff0a8
  531.     clr.w    $dff0b8
  532.     clr.w    $dff0c8
  533.     clr.w    $dff0d8
  534.     clr.l    CYB_partnrplay
  535.     clr.l    CYB_partnote
  536.     clr.l    CYB_partpoint
  537.     move.b    CYB_data+$3b6,CYB_maxpart+1
  538.     rts
  539.     rts
  540. CYB_music:
  541.     addq.w    #1,CYB_counter
  542. CYB_cool:cmp.w    #6,CYB_counter
  543.     bne.s    CYB_notsix
  544.     clr.w    CYB_counter
  545.     bra    CYB_rout2
  546. CYB_notsix:
  547.     lea    CYB_aud1temp(PC),a6
  548.     tst.b    3(a6)
  549.     beq.s    CYB_arp1
  550.     lea    $dff0a0,a5        
  551.     bsr.s    CYB_arprout
  552. CYB_arp1:lea    CYB_aud2temp(PC),a6
  553.     tst.b    3(a6)
  554.     beq.s    CYB_arp2
  555.     lea    $dff0b0,a5
  556.     bsr.s    CYB_arprout
  557. CYB_arp2:lea    CYB_aud3temp(PC),a6
  558.     tst.b    3(a6)
  559.     beq.s    CYB_arp3
  560.     lea    $dff0c0,a5
  561.     bsr.s    CYB_arprout
  562. CYB_arp3:lea    CYB_aud4temp(PC),a6
  563.     tst.b    3(a6)
  564.     beq.s    CYB_arp4
  565.     lea    $dff0d0,a5
  566.     bra.s    CYB_arprout
  567. CYB_arp4:    rts
  568. CYB_arprout:
  569.     move.b    2(a6),d0
  570.     and.b    #$0f,d0
  571.     tst.b    d0
  572.     beq    CYB_arpegrt
  573.     cmp.b    #$01,d0
  574.     beq.s    CYB_portup
  575.     cmp.b    #$02,d0
  576.     beq.s    CYB_portdwn
  577.     cmp.b    #$0a,d0
  578.     beq.s    CYB_volslide
  579.     rts
  580. CYB_portup:
  581.     moveq    #0,d0
  582.     move.b    3(a6),d0
  583.     sub.w    d0,22(a6)
  584.     cmp.w    #$71,22(a6)
  585.     bpl.s    CYB_ok1
  586.     move.w    #$71,22(a6)
  587. CYB_ok1:    move.w    22(a6),6(a5)
  588.     rts
  589. CYB_portdwn:
  590.     moveq    #0,d0
  591.     move.b    3(a6),d0
  592.     add.w    d0,22(a6)
  593.     cmp.w    #$538,22(a6)
  594.     bmi.s    CYB_ok2
  595.     move.w    #$538,22(a6)
  596. CYB_ok2:    move.w    22(a6),6(a5)
  597.     rts
  598. CYB_volslide:
  599.     moveq    #0,d0
  600.     move.b    3(a6),d0
  601.     lsr.b    #4,d0
  602.     tst.b    d0
  603.     beq.s    CYB_voldwn
  604.     add.w    d0,18(a6)
  605.     cmp.w    #64,18(a6)
  606.     bmi.s    CYB_ok3
  607.     move.w    #64,18(a6)
  608. CYB_ok3:    move.w    18(a6),8(a5)
  609.     rts
  610. CYB_voldwn:
  611.     moveq    #0,d0
  612.     move.b    3(a6),d0
  613.     and.b    #$0f,d0
  614.     sub.w    d0,18(a6)
  615.     bpl.s    CYB_ok4
  616.     clr.w    18(a6)
  617. CYB_ok4:    move.w    18(a6),8(a5)
  618.     rts
  619. CYB_arpegrt:
  620.     move.w    CYB_counter(PC),d0
  621.     cmp.w    #1,d0
  622.     beq.s    CYB_loop2
  623.     cmp.w    #2,d0
  624.     beq.s    CYB_loop3
  625.     cmp.w    #3,d0
  626.     beq.s    CYB_loop4
  627.     cmp.w    #4,d0
  628.     beq.s    CYB_loop2
  629.     cmp.w    #5,d0
  630.     beq.s    CYB_loop3
  631.     rts
  632. CYB_loop2:
  633.     moveq    #0,d0
  634.     move.b    3(a6),d0
  635.     lsr.b    #4,d0
  636.     bra.s    CYB_cont
  637. CYB_loop3:
  638.     moveq    #$00,d0
  639.     move.b    3(a6),d0
  640.     and.b    #$0f,d0
  641.     bra.s    CYB_cont
  642. CYB_loop4:
  643.     move.w    16(a6),d2
  644.     bra.s    CYB_endpart
  645. CYB_cont:
  646.     add.w    d0,d0
  647.     moveq    #0,d1
  648.     move.w    16(a6),d1
  649.     and.w    #$fff,d1
  650.     lea    CYB_arpeggio(PC),a0
  651. CYB_loop5:
  652.     move.w    (a0,d0),d2
  653.     cmp.w    (a0),d1
  654.     beq.s    CYB_endpart
  655.     addq.l    #2,a0
  656.     bra.s    CYB_loop5
  657. CYB_endpart:
  658.     move.w    d2,6(a5)
  659.     rts
  660. CYB_rout2:
  661.     lea    CYB_data,a0
  662.     move.l    a0,a3
  663.     add.l    #$0c,a3
  664.     move.l    a0,a2
  665.     add.l    #$3b8,a2
  666.     add.l    #$43c,a0
  667.     move.l    CYB_partnrplay(PC),d0
  668.     moveq    #0,d1
  669.     move.b    (a2,d0),d1
  670.     asl.l    #8,d1
  671.     asl.l    #2,d1
  672.     add.l    CYB_partnote(PC),d1
  673.     move.l    d1,CYB_partpoint
  674.     clr.w    CYB_dmacon
  675.     lea    $dff0a0,a5
  676.     lea    CYB_aud1temp(PC),a6
  677.     bsr    CYB_playit
  678.     lea    $dff0b0,a5
  679.     lea    CYB_aud2temp(PC),a6
  680.     bsr    CYB_playit
  681.     lea    $dff0c0,a5
  682.     lea    CYB_aud3temp(PC),a6
  683.     bsr    CYB_playit
  684.     lea    $dff0d0,a5
  685.     lea    CYB_aud4temp(PC),a6
  686.     bsr    CYB_playit
  687.     move.w    #$01f4,d0
  688. CYB_rls:    dbf    d0,CYB_rls
  689.     move.w    #$8000,d0
  690.     or.w    CYB_dmacon,d0
  691.     move.w    d0,$dff096
  692.     lea    CYB_aud4temp(PC),a6
  693.     cmp.w    #1,14(a6)
  694.     bne.s    CYB_voice3
  695.     move.l    10(a6),$dff0d0
  696.     move.w    #1,$dff0d4
  697. CYB_voice3:
  698.     
  699.     lea    CYB_aud3temp(PC),a6
  700.     cmp.w    #1,14(a6)
  701.     bne.s    CYB_voice2
  702.     move.w    #1,$dff0c4
  703. CYB_voice2:
  704.     
  705.     lea    CYB_aud2temp(PC),a6
  706.     cmp.w    #1,14(a6)
  707.     bne.s    CYB_voice1
  708.     move.l    10(a6),$dff0b0
  709.     move.w    #1,$dff0b4
  710. CYB_voice1:
  711.     lea    CYB_aud1temp(PC),a6
  712.     cmp.w    #1,14(a6)
  713.     bne.s    CYB_voice0
  714.     move.l    10(a6),$dff0a0
  715.     move.w    #1,$dff0a4
  716. CYB_voice0:
  717.     move.l    CYB_partnote(PC),d0
  718.     add.l    #$10,d0
  719.     move.l    d0,CYB_partnote
  720.     cmp.l    #$400,d0
  721.     bne.s    CYB_stop
  722. CYB_higher:
  723.     clr.l    CYB_partnote
  724.     addq.l    #1,CYB_partnrplay
  725.     moveq    #0,d0
  726.     move.w    CYB_maxpart(PC),d0
  727.     move.l    CYB_partnrplay(PC),d1
  728.     cmp.l    d0,d1
  729.     bne.s    CYB_stop
  730.     clr.l    CYB_partnrplay
  731.     ;st    Pflag
  732. CYB_stop:tst.w    CYB_status
  733.     beq.s    CYB_stop2
  734.     clr.w    CYB_status
  735.     bra.s    CYB_higher
  736. CYB_stop2:
  737.     rts
  738. CYB_playit:
  739.     
  740.     move.l    (a0,d1.l),(a6)
  741.     addq.l    #4,d1
  742.     moveq    #0,d2
  743.     move.b    2(a6),d2
  744.     and.b    #$f0,d2
  745.     lsr.b    #4,d2
  746.     move.b    (a6),d0
  747.     and.b    #$f0,d0
  748.     or.b    d0,d2
  749.     tst.b    d2
  750.     beq.s    CYB_nosamplechange
  751.     moveq    #0,d3
  752.     lea    CYB_samples(PC),a1
  753.     move.l    d2,d4
  754.     asl.l    #2,d2
  755.     mulu    #$1e,d4
  756.     move.l    (a1,d2),4(a6)
  757.     move.w    (a3,d4.l),8(a6)
  758.     move.w    2(a3,d4.l),18(a6)
  759.     move.w    4(a3,d4.l),d3
  760.     tst.w    d3
  761.     beq.s    CYB_displace
  762.     move.l    4(a6),d2
  763.     add.l    d3,d2
  764.     move.l    d2,4(a6)
  765.     move.l    d2,10(a6)
  766.     move.w    6(a3,d4.l),8(a6)
  767.     move.w    6(a3,d4.l),14(a6)
  768.     move.w    18(a6),8(a5)
  769.     bra.s    CYB_nosamplechange
  770. CYB_displace:
  771.     move.l    4(a6),d2
  772.     add.l    d3,d2
  773.     move.l    d2,10(a6)
  774.     move.w    6(a3,d4.l),14(a6)
  775.     move.w    18(a6),8(a5)
  776. CYB_nosamplechange:
  777.     move.w    (a6),d0
  778.     and.w    #$fff,d0
  779.     tst.w    d0
  780.     beq.s    CYB_retrout
  781.     move.w    (a6),16(a6)
  782.     move.w    20(a6),$dff096
  783.     move.l    4(a6),(a5)
  784.     move.w    8(a6),4(a5)
  785.     move.w    (a6),d0
  786.     and.w    #$fff,d0
  787.     move.w    d0,6(a5)
  788.     move.w    20(a6),d0
  789.     or.w    d0,CYB_dmacon
  790. CYB_retrout:
  791.     tst.w    (a6)
  792.     beq.s    CYB_nonewper
  793.     move.w    (a6),22(a6)
  794. CYB_nonewper:
  795.     move.b    2(a6),d0
  796.     and.b    #$0f,d0
  797.     cmp.b    #$0b,d0
  798.     beq.s    CYB_posjmp
  799.     cmp.b    #$0c,d0
  800.     beq.s    CYB_setvol
  801.     cmp.b    #$0d,d0
  802.     beq.s    CYB_break
  803.     cmp.b    #$0e,d0
  804.     beq.s    CYB_setfil
  805.     cmp.b    #$0f,d0
  806.     beq.s    CYB_setspeed
  807.     rts
  808. CYB_posjmp:
  809.     not.w    CYB_status
  810.     moveq    #0,d0
  811.     move.b    3(a6),d0
  812.     subq.b    #1,d0
  813.     move.l    d0,CYB_partnrplay
  814.     rts
  815. CYB_setvol:
  816.     move.b    3(a6),8(a5)
  817.     rts
  818. CYB_break:
  819.     not.w    CYB_status
  820.     rts
  821. CYB_setfil:
  822.     moveq    #0,d0
  823.     move.b    3(a6),d0
  824.     and.b    #1,d0
  825.     rol.b    #1,d0
  826.     and.b    #$fd,$bfe001
  827.     or.b    d0,$bfe001
  828.     rts
  829. CYB_setspeed:
  830.     move.b    3(a6),d0
  831.     and.b    #$0f,d0
  832.     beq.s    CYB_back
  833.     clr.w    CYB_counter
  834.     move.b    d0,CYB_cool+3
  835. CYB_back:    rts
  836. CYB_aud1temp:
  837.     dcb.w    10,0
  838.     dc.w    1
  839.     dcb.w    2,0
  840. CYB_aud2temp:
  841.     dcb.w    10,0
  842.     dc.w    2
  843.     dcb.w    2,0
  844. CYB_aud3temp:
  845.     dcb.w    10,0
  846.     dc.w    4
  847.     dcb.w    2,0
  848. CYB_aud4temp:
  849.     dcb.w    10,0
  850.     dc.w    8
  851.     dcb.w    2,0
  852. CYB_partnote:    dc.l    0
  853. CYB_partnrplay:    dc.l    0
  854. CYB_counter:    dc.w    0
  855. CYB_partpoint:    dc.l    0
  856. CYB_samples:    dc.l    0
  857. CYB_sample1:    dcb.l    31,0
  858. CYB_maxpart:    dc.w    0
  859. CYB_dmacon:    dc.w    0
  860. CYB_status:    dc.w    0
  861. CYB_arpeggio:
  862.     dc.w $0358,$0328,$02fa,$02d0,$02a6,$0280,$025c
  863.     dc.w $023a,$021a,$01fc,$01e0,$01c5,$01ac,$0194,$017d
  864.     dc.w $0168,$0153,$0140,$012e,$011d,$010d,$00fe,$00f0
  865.     dc.w $00e2,$00d6,$00ca,$00be,$00b4,$00aa,$00a0,$0097
  866.     dc.w $008f,$0087,$007f,$0078,$0071,$0000,$0000,$0000
  867.  
  868.  
  869.             
  870.  
  871. ; ** THE COPPERLIST **
  872. OURCOPPER:
  873. Blank1L    dc.w    bpl1ptl,$0000
  874. Blank1H    dc.w    bpl1pth,$0000
  875. Blank2L    dc.w    bpl3ptl,$0000
  876. Blank2H    dc.w    bpl3pth,$0000
  877. Blank3L    dc.w    bpl5ptl,$0000
  878. Blank3H    dc.w    bpl5pth,$0000
  879.         dc.w    $120,0
  880.         dc.w    $122,0
  881.         dc.w    bpl1mod,4,bpl2mod,0
  882.         dc.w    diwstrt,$2c81-32,diwstop,$2cc1+32
  883.         dc.w    bplcon0,$6600,bplcon1,$0000
  884.         dc.w    ddfstrt,$28,ddfstop,$d0
  885.         dc.w    color01,$000
  886.         dc.w    color08,$F00,color09,$ff0,color10,$ee0,color11,$dd0
  887.         dc.w    color12,$de0,color13,$dc0,color14,$db0,color15,$da0
  888. bp2lo:    dc.w    bpl2ptl,$0000
  889. bp2hi:    dc.w    bpl2pth,$0000
  890. bp4lo:    dc.w    bpl4ptl,$0000
  891. bp4hi:    dc.w    bpl4pth,$0000
  892. bp6lo:    dc.w    bpl6ptl,$0000
  893. bp6hi:    dc.w    bpl6pth,$0000
  894. deltay2:wait    $3909,$fffe
  895. bp1lo:    dc.w    bpl1ptl,$0000
  896. bp1hi:    dc.w    bpl1pth,$0000
  897. bp3lo:    dc.w    bpl3ptl,$0000
  898. bp3hi:    dc.w    bpl3pth,$0000
  899. bp5lo:    dc.w    bpl5ptl,$0000
  900. bp5hi:    dc.w    bpl5pth,$0000
  901.          DC.W    color01,$eee
  902.          Dc.w    color02,$dde
  903.         DC.W    color03,$bbd
  904.         DC.W    color04,$aac
  905.         DC.W    color05,$88c
  906.         DC.W    color06,$77b
  907.         DC.W    color07,$65a
  908.         dc.w    color01,$eee
  909.         wait    $5109,$fffe
  910.         dc.w    bpl1mod,-44
  911.         wait    $5209,$fffe
  912.         dc.w    bpl1mod,4
  913.         wait    $5309,$fffe
  914.         dc.w    bpl1mod,-44
  915.         wait    $5409,$fffe
  916.         dc.w    bpl1mod,4
  917.         wait    $5509,$fffe
  918.         dc.w    bpl1mod,-44
  919.         wait    $5609,$fffe
  920.         dc.w    bpl1mod,4
  921.         wait    $5709,$fffe
  922.         dc.w    bpl1mod,-44
  923.         wait    $5809,$fffe
  924.         dc.w    bpl1mod,4
  925.         wait    $5909,$fffe
  926.         dc.w    bpl1mod,-44
  927.         wait    $5a09,$fffe
  928.         dc.w    bpl1mod,4
  929.         wait    $5b09,$fffe
  930.         dc.w    bpl1mod,-44
  931.         wait    $5c09,$fffe
  932.         dc.w    bpl1mod,4
  933.         wait    $5d09,$fffe
  934.         dc.w    bpl1mod,-44
  935.         wait    $5e09,$fffe
  936.         dc.w    bpl1mod,4
  937.         wait    $5f09,$fffe
  938.         dc.w    bpl1mod,-44
  939.         wait    $6009,$fffe
  940.         dc.w    bpl1mod,4
  941.         wait    $6109,$fffe
  942.         dc.w    bpl1mod,-44
  943.         wait    $6209,$fffe
  944.         dc.w    bpl1mod,4
  945.         wait    $6309,$fffe
  946.         dc.w    bpl1mod,-44
  947.         wait    $6409,$fffe
  948.         dc.w    bpl1mod,4
  949.         wait    $6509,$fffe
  950.         dc.w    bpl1mod,-44
  951.         wait    $6609,$fffe
  952.         dc.w    bpl1mod,4
  953.         wait    $6709,$fffe
  954.         dc.w    bpl1mod,-44
  955.         wait    $6809,$fffe
  956.         dc.w    bpl1mod,4
  957.         wait    $6909,$fffe
  958.         dc.w    bpl1mod,-44
  959.         wait    $6a09,$fffe
  960.         dc.w    bpl1mod,4
  961.         wait    $6b09,$fffe
  962.         dc.w    bpl1mod,-44
  963.         wait    $6c09,$fffe
  964.         dc.w    bpl1mod,4
  965.         wait    $6d09,$fffe
  966.         dc.w    bpl1mod,-44
  967.         wait    $6e09,$fffe
  968.         dc.w    bpl1mod,4
  969.         wait    $6f09,$fffe
  970.         dc.w    bpl1mod,-44
  971.         wait    $7009,$fffe
  972.         dc.w    bpl1mod,4
  973.         wait    $7109,$fffe
  974.         dc.w    bpl1mod,-44
  975.         wait    $7209,$fffe
  976.         dc.w    bpl1mod,4
  977.         wait    $7309,$fffe
  978.         dc.w    bpl1mod,-44
  979.         wait    $7409,$fffe
  980.         dc.w    bpl1mod,4
  981.         wait    $7509,$fffe
  982.         dc.w    bpl1mod,-44
  983.         wait    $7609,$fffe
  984.         dc.w    bpl1mod,4
  985.         wait    $7709,$fffe
  986.         dc.w    bpl1mod,-44
  987.         wait    $7809,$fffe
  988.         dc.w    bpl1mod,4
  989.         wait    $7909,$fffe
  990.         dc.w    bpl1mod,-44
  991.         wait    $7a09,$fffe
  992.         dc.w    bpl1mod,4
  993.         wait    $7b09,$fffe
  994.         dc.w    bpl1mod,-44
  995.         wait    $7c09,$fffe
  996.         dc.w    bpl1mod,4
  997.         wait    $7d09,$fffe
  998.         dc.w    bpl1mod,-44
  999.         wait    $7e09,$fffe
  1000.         dc.w    bpl1mod,4
  1001.         wait    $7f09,$fffe
  1002.         dc.w    bpl1mod,-44
  1003.         wait    $8009,$fffe
  1004.         dc.w    bpl1mod,4
  1005.  
  1006. deltay:    wait    $da09,$fffe
  1007. abp1lo:    dc.w    bpl1ptl,$0000
  1008. abp1hi:    dc.w    bpl1pth,$0000
  1009. abp3lo:    dc.w    bpl3ptl,$0000
  1010. abp3hi:    dc.w    bpl3pth,$0000
  1011. abp5lo:    dc.w    bpl5ptl,$0000
  1012. abp5hi:    dc.w    bpl5pth,$0000
  1013.  
  1014.         DC.W    color01,$F11
  1015.          Dc.w    color02,$F22
  1016.         DC.W    color03,$F33
  1017.         DC.W    color04,$F44
  1018.         DC.W    color05,$F55
  1019.         DC.W    color06,$F66
  1020.         DC.W    color07,$F77
  1021.         end_copper
  1022.         
  1023.  
  1024. ;LOCAL CONSTANTS
  1025.  
  1026. WBCOPPER:        DC.L    0
  1027. GFXLIB:            DC.B     "graphics.library",0
  1028. GFXBASE:        DC.L    0
  1029. systemints:        dc.l    0
  1030. scroll_offset:    dc.l    0
  1031. screenx:        dc.l    picture
  1032. screeny:        dc.l    picture2
  1033. letter:            dc.b    0
  1034. letter2:        dc.b    0
  1035. val:            dc.l    0
  1036. val2:            dc.l    0
  1037. stopper:        dc.l    0
  1038. stopper2:        dc.l    0
  1039. speed:            dc.w    12
  1040. ycord:            dc.l    0
  1041. ycordminus:        dc.l    0
  1042. ycord2:            dc.l    0
  1043. ycordminus2:    dc.l    0
  1044. XPOS:            DC.L    300
  1045. YPOS:            DC.L    200
  1046. Blank            Dcb.b    4000,0
  1047.  
  1048.  
  1049. ;BINARY FILES TO BE INCLUDED
  1050.     EVEN
  1051. FONTSPACE:
  1052. font:    
  1053.     incbin    df1:METALCHARS
  1054. picture2    
  1055.     dcb.b    10000*3,0
  1056. picture:
  1057.     dcb.b    10000*3,0
  1058. PLAY2:
  1059.     INCBIN    DF1:PIC.IFF2
  1060. cyb_data:
  1061.     incbin    df1:mod.count 
  1062.  
  1063.  
  1064.  
  1065.  
  1066.  
  1067.  
  1068.  
  1069.     
  1070.     
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.     
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.